//
// Created by 86136 on 2024/11/28.
//

#ifndef CHATSERVER_H
#define CHATSERVER_H

#include <muduo/net/TcpServer.h>
#include <muduo/net/EventLoop.h>
using namespace muduo;
using namespace muduo::net;

// 聊天服务器主类
class ChatServer {
public:
    // 初始化聊天服务器对象
    ChatServer(EventLoop* loop,                 // 事件循环
               const InetAddress& listenAddr,   // IP + port
               const string& nameArg);          // 服务器的名字

    // 开启事件循环
    void start();

private:
    // 上报链接相关信息的回调函数
    // 专门处理用户连接的创建和断开epoll listen accept
    void onConnection(const TcpConnectionPtr &conn);

    // 上报读写事件相关信息的回调函数
    void onMessage(const TcpConnectionPtr &conn,    // 连接
                   Buffer *buffer,                  // 缓冲区
                   Timestamp time);                 // 接收到数据的时间信息
    TcpServer _server;  // #1
    EventLoop *_loop;   // 指向事件循环对象的指针
};


#endif //MYPROJECT_CHATSERVER_H
